package main

import (
	"fmt"
	"strconv"
	"time"
)

/*
算数运算符
+ - * / % ++ --
关系运算符
 > < != ==
逻辑运算符 -- 注意短路运算
	将多个条件组合在一起区判断  进行条件的与、或、非
     &&
	||
	！

位运算符
 & | ^ << >>

赋值运算符
= += -=  /=
其他运算符
 &变量名


*/

func main() {
	//x, y := 8, 5
	//fmt.Println("除法运算：", x/y)
	//fmt.Println("浮点运算：", float64(x)/float64(y))
	//fmt.Println("取余运算：", x%y)
	//x++
	//fmt.Println("自增运算：", x)
	//y--
	//fmt.Println("自减运算：", y)

	//除了上面的基本运算之外，还有一个math库提供了许多数学函数和常量
	//fmt.Println(math.Pi)
	//fmt.Println(math.Pow(5, 3))
	//fmt.Println(math.Abs(-100))

	//关系运算符 -- 不能连用

	//逻辑运算符 -- 短路运算
	//x, y, z := 8, 5, 0
	//if (x > 10) && (y/z > 0) {
	//	fmt.Println("ok")
	//}

	//位运算符
	//fmt.Println(5 | 4)
	//fmt.Println(5 & 6)
	//fmt.Println(5 ^ 6)
	//fmt.Println(5 << 2)

	//从键盘接收用户输入身份证号码 以4开头18位数字，判断输入合法性
	//431224201805189999 获取身份证上的出生年月日，判断这个人是否大于18岁
	//大于18岁提示“录用”，否则提示“劝退”
	var idCard string
	fmt.Print("请输入身份证号码：")
	_, err := fmt.Scanln(&idCard)
	if err != nil {
		fmt.Println("输入错误，请重新输入身份证号码。")
		return
	}

	// 检查身份证号码是否以4开头且为18位
	if len(idCard) != 18 || idCard[0] != '4' {
		fmt.Println("身份证号码格式不正确，必须以4开头且为18位。")
		return
	}

	// 检查是否只包含数字
	for _, ch := range idCard {
		if ch < '0' || ch > '9' {
			fmt.Println("身份证号码只能包含数字。")
			return
		}
	}

	// 提取出生年月日
	birthYear, _ := strconv.Atoi(idCard[6:10])
	birthMonth, _ := strconv.Atoi(idCard[10:12])
	birthDay, _ := strconv.Atoi(idCard[12:14])

	// 创建出生年月日的时间对象
	birthDate := time.Date(birthYear, time.Month(birthMonth), birthDay, 0, 0, 0, 0, time.UTC)

	// 获取当前时间
	currentDate := time.Now()

	// 计算年龄
	if currentDate.Sub(birthDate).Hours()/24/365 > 18 {
		fmt.Println("录用")
	} else {
		fmt.Println("劝退")
	}
}
